//package com.gzy.xuexiziliao.filter;
//
//
//import java.io.IOException;
//import java.util.Arrays;
//import java.util.List;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import jakarta.servlet.*;
//import jakarta.servlet.annotation.WebFilter;
//import jakarta.servlet.http.HttpServletRequest;
//import jakarta.servlet.http.HttpServletResponse;
//
//@WebFilter(urlPatterns = "/*")
//public class WxLoginCheckFilter implements Filter {
//
//    @Override
//    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
//        HttpServletRequest request = (HttpServletRequest) servletRequest;
//        HttpServletResponse response = (HttpServletResponse) servletResponse;
//
//        // 放行OPTIONS请求
//        if ("OPTIONS".equals(request.getMethod())) {
//            response.setStatus(200);
//            return;
//        }
//
//        // 获取请求路径
//        String url = request.getRequestURI();
//
//        // 放行登录接口和静态资源
//        if (url.contains("/student/login")) {
//            chain.doFilter(request, response);
//            return;
//        }
//
//        // 获取token
//        String token = request.getHeader("token");
//        if (token == null || token.isEmpty()) {
//            response.setStatus(401);
//            return;
//        }
//
//        try {
//            // 从JWT token中获取studentId
//            String[] parts = token.split("\\.");
//            if (parts.length == 3) {
//                // 解码payload
//                String payload = new String(java.util.Base64.getDecoder().decode(parts[1]));
//                // 使用fastjson解析
//                JSONObject jsonObject = JSON.parseObject(payload);
//                Integer studentId = jsonObject.getInteger("studentId");
//
//                // 将studentId设置到request属性中
//                request.setAttribute("studentId", studentId);
//
//                // 继续执行
//                chain.doFilter(request, response);
//            } else {
//                response.setStatus(401);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            response.setStatus(401);
//        }
//    }
//
//    @Override
//    public void init(FilterConfig filterConfig) throws ServletException {
//    }
//
//    @Override
//    public void destroy() {
//    }
//}